package cn.org.donald.controller;

import cn.org.donald.annotation.PermissionExclude;
import cn.org.donald.security.body.PermissionInfo;
import cn.org.donald.security.util.DonaldUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @author : Donald
 * @since : 2021/3/16 14:22
 */
@RestController
@RequestMapping("/test")
@Api(value = "测试前端控制器")
public class TestController {


    /**
     * 配置文件配置了放行
     * @return
     */
    @GetMapping("/one")
    @ApiOperation(value = "测试接口1")
    public String one() {
        return "I am one!";
    }

    /**
     * 注解@PermissionExclue表示该接口不做权限认证
     * @return
     */
    @GetMapping("/two")
    @ApiOperation(value = "测试接口2")
    @PermissionExclude
    public String two() {
        return "I am two!";
    }

    /**
     * 该接口在自定义过滤配置了一个权限(写死的)
     * @return
     */
    @GetMapping("/three")
    @ApiOperation(value = "测试接口3")
    public String three() {
        return "I am three!";
    }

    /**
     * 该接口没有任何特殊配置,身份认证通过后,要权限认证也通过才能访问
     * @return
     */
    @GetMapping("/four")
    @ApiOperation(value = "测试接口4")
    public String four() {
        return "I am four!";
    }

    /**
     * 该接口可以获取系统所有接口的权限名等信息
     * @return
     */
    @GetMapping("/getPermissions")
    @ApiOperation("获取系统所有权限名")
    @PermissionExclude
    public List<PermissionInfo> getPermissions() {
        return DonaldUtil.getPermissionInfo();
    }
}
